ASP.Net Core অ্যাপ্লিকেশনে Routing এবং Middleware দুটি অত্যন্ত গুরুত্বপূর্ণ ধারণা, যা HTTP রিকোয়েস্ট প্রক্রিয়ার নিয়ন্ত্রণ এবং অ্যাপ্লিকেশন লজিক পরিচালনা করে। এই দুটি প্রযুক্তি .NET Core অ্যাপ্লিকেশনের ফ্লেক্সিবিলিটি এবং শক্তি বাড়াতে সহায়তা করে।
Routing হল একটি প্রক্রিয়া যার মাধ্যমে অ্যাপ্লিকেশনটি একটি নির্দিষ্ট URL প্যাটার্নের ভিত্তিতে রিকোয়েস্ট প্রক্রিয়া করে এবং তা নির্দিষ্ট কন্ট্রোলার বা অ্যাকশনের সাথে যুক্ত করে। এটি HTTP রিকোয়েস্ট এর পাথ এবং মেথড (GET, POST, ইত্যাদি) অনুযায়ী অ্যাপ্লিকেশনটির ভিন্ন ভিন্ন অংশে রিকোয়েস্ট পাঠানোর কাজ করে।
ASP.Net Core-এ রাউটিং URL Patterns এবং Route Handlers এর মধ্যে সম্পর্ক নির্ধারণ করে। সাধারণত, রাউটিং প্যাটার্নগুলি কন্ট্রোলার এবং অ্যাকশনের মাধ্যমে নির্দিষ্ট করা হয়। উদাহরণস্বরূপ, যদি কোনো ইউজার /home/index
URL এ প্রবেশ করে, তবে সেটি HomeController
এর Index
অ্যাকশন মেথডকে কল করবে।
ASP.Net Core-এ রাউটিং কনফিগার করা হয় Startup.cs
ফাইলের মধ্যে, যেখানে Configure
মেথডে রাউটিং সিস্টেমের কনফিগারেশন করা হয়। সাধারণভাবে, UseRouting()
এবং UseEndpoints()
মেথড ব্যবহার করা হয়।
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting(); // রাউটিং সিস্টেম সক্রিয় করা
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}"); // ডিফল্ট রাউটিং প্যাটার্ন
});
}
এই কনফিগারেশনে {controller=Home}
নির্দেশ করে যে, যদি কোনো কন্ট্রোলার না দেওয়া হয় তবে HomeController
ব্যবহার হবে। {action=Index}
নির্দেশ করে যে, যদি কোনো অ্যাকশন না দেওয়া হয় তবে Index
অ্যাকশন কল হবে। {id?}
অংশটি অপশনাল প্যারামিটার নির্দেশ করে।
ASP.Net Core-এ Attribute Routing ব্যবহারের মাধ্যমে URL রাউটিং আরো সহজ এবং কাস্টমাইজড করা যায়। এটি অ্যাকশনে সরাসরি URL প্যাটার্ন অ্যাট্রিবিউট হিসেবে যুক্ত করা যায়, যা আরও বেশি ফ্লেক্সিবিলিটি প্রদান করে। উদাহরণস্বরূপ:
[Route("home")]
public class HomeController : Controller
{
[Route("index")]
public IActionResult Index()
{
return View();
}
[Route("about")]
public IActionResult About()
{
return View();
}
}
এই কন্ট্রোলারে /home/index
এবং /home/about
URL পাথের জন্য আলাদা রাউট তৈরি করা হয়েছে।
Middleware হল একটি প্রোগ্রামাল কম্পোনেন্ট যা HTTP রিকোয়েস্ট এবং রেসপন্সের মধ্যে চলে। এটি পিপলাইনে বিভিন্ন ধাপে কাজ করতে পারে, যেমন রিকোয়েস্ট চেক করা, রেসপন্স মডিফাই করা, বা লগিং, অথেনটিকেশন, অথরাইজেশন প্রভৃতি কাজ করা। ASP.Net Core অ্যাপ্লিকেশনটি একটি মিডলওয়্যার পিপলাইনে চলে যেখানে একের পর এক মিডলওয়্যার কম্পোনেন্ট রিকোয়েস্ট প্রক্রিয়া করে।
ASP.Net Core-এ Middleware সাধারণত HTTP রিকোয়েস্টের শুরুতে চলে এবং পরবর্তী মিডলওয়্যারের কাছে রিকোয়েস্টটি পাঠানোর আগে এটি একটি কাজ সম্পাদন করে। বিভিন্ন মিডলওয়্যার যেমন অথেনটিকেশন, লগিং, সেশন হ্যান্ডলিং, কুকি ম্যানেজমেন্ট ইত্যাদি কাজ সম্পাদন করতে পারে।
ASP.Net Core অ্যাপ্লিকেশনে মিডলওয়্যার পিপলাইনটি সোজা লিনিয়ার চেইন হিসেবে কাজ করে। এর মধ্যে বিভিন্ন মিডলওয়্যার কম্পোনেন্ট থাকে, যেমন:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseMiddleware<CustomMiddleware>(); // Custom Middleware প্রয়োগ করা
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
উপরের কোডে CustomMiddleware
একটি কাস্টম মিডলওয়্যার, যা রিকোয়েস্ট পিপলাইনে যোগ করা হয়েছে।
ASP.Net Core-এ কাস্টম মিডলওয়্যার তৈরি করা খুবই সহজ। একটি কাস্টম মিডলওয়্যার তৈরির জন্য আপনাকে একটি ক্লাস তৈরি করতে হবে, যা RequestDelegate
ব্যবহার করবে।
public class CustomMiddleware
{
private readonly RequestDelegate _next;
public CustomMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
// রিকোয়েস্ট প্রক্রিয়া শুরু হওয়ার আগে কিছু কাজ করা
Console.WriteLine("Custom Middleware - Request Start");
await _next(context); // পরবর্তী মিডলওয়্যারে রিকোয়েস্ট পাঠানো
// রিকোয়েস্ট প্রক্রিয়া শেষ হওয়ার পরে কিছু কাজ করা
Console.WriteLine("Custom Middleware - Response End");
}
}
এটি পরে Startup.cs
-এর Configure
মেথডে ইনজেক্ট করা হয়, যেখানে মিডলওয়্যার পিপলাইনে এটি যোগ করা হবে।
সারাংশ
ASP.Net Core-এ Routing এবং Middleware এর মাধ্যমে HTTP রিকোয়েস্টের প্রক্রিয়া অত্যন্ত ফ্লেক্সিবল এবং কাস্টমাইজড করা যায়। রাউটিং সিস্টেম URL প্যাটার্নের ভিত্তিতে রিকোয়েস্ট কন্ট্রোলার এবং অ্যাকশন মেথডে পাঠায়, এবং মিডলওয়্যার পিপলাইন রিকোয়েস্ট এবং রেসপন্স প্রক্রিয়া করে। কাস্টম মিডলওয়্যার তৈরি এবং রাউটিং কনফিগারেশনের মাধ্যমে আপনি অ্যাপ্লিকেশনকে আরও দক্ষ এবং সুনির্দিষ্টভাবে নিয়ন্ত্রণ করতে পারবেন।
common.read_more